<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <!-- 导入页面的基本样式 -->
    <link rel="stylesheet" href="./css/search.css" />
    <!-- 导入 jQuery -->
    <script src="./lib/jquery.js"></script>
    <!-- 导入模板引擎 -->
    <script src="./lib/template-web.js"></script>

</head>

<body>
    <div class="container">
        <!-- Logo -->
        <img src="./images/taobao_logo.png" alt="" class="logo" />

        <div class="box">
            <!-- tab 栏 -->
            <div class="tabs">
                <div class="tab-active">宝贝</div>
                <div>店铺</div>
            </div>
            <!-- 搜索区域（搜索框和搜索按钮） -->
            <div class="search-box">
                <input type="text" class="ipt" id='ipt' placeholder="请输入要搜索的内容" /><button class="btnSearch">
                    搜索
                </button>
            </div>
            <div id="suggest-list"></div>
        </div>
    </div>


    <!-- 定义一个模板 -->
    <script type="text/html" id="tpl-sugggestList">
        {{each result}}
        <div class="suggest-item">{{$value[0]}}</div>
        {{/each}}
    </script>

    <script>
        $(function() {
            //给输入框添加防抖
            //1.防抖的timer
            var timer = null;
            //2.定义防抖的函数
            function debounce(words) {
                timer = setTimeout(function() { //设置延时器
                    getSuggetList(words);
                }, 500);
            }; //

            //1.定义个全局的缓存对象
            var cache = {};


            //监听搜索框的keyup事件
            $('#ipt').on('keyup', function() {
                //清除延时器
                clearTimeout(timer);

                let words = $(this).val().trim();
                if (words.length <= 0) {
                    // return $('#suggest-list').empty().hide();
                    return $("#suggest-list").html('').hide();
                }
                console.log(words);

                //优先从本地缓存中渲染 建议列表
                if (cache[words]) {
                    return renderSuggetList(cache[words]);
                }

                //采用防抖的方式来获取建议列表
                debounce(words);


                // getSuggetList(words);

            });


            //封装一个getSuggetList函数
            function getSuggetList(words) {
                $.ajax({
                    url: 'https://suggest.taobao.com/sug?q=' + words,
                    dataType: 'jsonp', //发起一个JSONP的请求
                    success: function(res) {
                        console.log(res);

                        //调用模板引擎渲染数据到页面
                        renderSuggetList(res);
                    }
                })
            };

            //使用模板引擎渲染建议列表
            function renderSuggetList(res) {
                //如果res没有数据，则不渲染
                if (res.result.length <= 0) {
                    return
                }
                let html = template('tpl-sugggestList', res);
                $('#suggest-list').html(html).show();

                //全局缓存建议列表
                //1.获取用户的输入作为键key，将建议作为值value存入缓存对象中
                var key = $('#ipt').val().trim();
                cache[key] = res;
            }
        })
    </script>
</body>

</html>